home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / asm / apic.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  3KB  |  127 lines

  1. #ifndef __ASM_APIC_H
  2. #define __ASM_APIC_H
  3.  
  4. #include <linux/config.h>
  5. #include <linux/pm.h>
  6. #include <asm/fixmap.h>
  7. #include <asm/apicdef.h>
  8. #include <asm/system.h>
  9.  
  10. #define Dprintk(x...)
  11.  
  12. /*
  13.  * Debugging macros
  14.  */
  15. #define APIC_QUIET   0
  16. #define APIC_VERBOSE 1
  17. #define APIC_DEBUG   2
  18.  
  19. extern int apic_verbosity;
  20.  
  21. /*
  22.  * Define the default level of output to be very little
  23.  * This can be turned up by using apic=verbose for more
  24.  * information and apic=debug for _lots_ of information.
  25.  * apic_verbosity is defined in apic.c
  26.  */
  27. #define apic_printk(v, s, a...) do {       \
  28.         if ((v) <= apic_verbosity) \
  29.             printk(s, ##a);    \
  30.     } while (0)
  31.  
  32.  
  33. #ifdef CONFIG_X86_LOCAL_APIC
  34.  
  35. /*
  36.  * Basic functions accessing APICs.
  37.  */
  38.  
  39. static __inline void apic_write(unsigned long reg, unsigned long v)
  40. {
  41.     *((volatile unsigned long *)(APIC_BASE+reg)) = v;
  42. }
  43.  
  44. static __inline void apic_write_atomic(unsigned long reg, unsigned long v)
  45. {
  46.     xchg((volatile unsigned long *)(APIC_BASE+reg), v);
  47. }
  48.  
  49. static __inline unsigned long apic_read(unsigned long reg)
  50. {
  51.     return *((volatile unsigned long *)(APIC_BASE+reg));
  52. }
  53.  
  54. static __inline__ void apic_wait_icr_idle(void)
  55. {
  56.     while ( apic_read( APIC_ICR ) & APIC_ICR_BUSY )
  57.         cpu_relax();
  58. }
  59.  
  60. int get_physical_broadcast(void);
  61.  
  62. #ifdef CONFIG_X86_GOOD_APIC
  63. # define FORCE_READ_AROUND_WRITE 0
  64. # define apic_read_around(x)
  65. # define apic_write_around(x,y) apic_write((x),(y))
  66. #else
  67. # define FORCE_READ_AROUND_WRITE 1
  68. # define apic_read_around(x) apic_read(x)
  69. # define apic_write_around(x,y) apic_write_atomic((x),(y))
  70. #endif
  71.  
  72. static inline void ack_APIC_irq(void)
  73. {
  74.     /*
  75.      * ack_APIC_irq() actually gets compiled as a single instruction:
  76.      * - a single rmw on Pentium/82489DX
  77.      * - a single write on P6+ cores (CONFIG_X86_GOOD_APIC)
  78.      * ... yummie.
  79.      */
  80.  
  81.     /* Docs say use 0 for future compatibility */
  82.     apic_write_around(APIC_EOI, 0);
  83. }
  84.  
  85. extern void (*wait_timer_tick)(void);
  86.  
  87. extern int get_maxlvt(void);
  88. extern void clear_local_APIC(void);
  89. extern void connect_bsp_APIC (void);
  90. extern void disconnect_bsp_APIC (void);
  91. extern void disable_local_APIC (void);
  92. extern void lapic_shutdown (void);
  93. extern int verify_local_APIC (void);
  94. extern void cache_APIC_registers (void);
  95. extern void sync_Arb_IDs (void);
  96. extern void init_bsp_APIC (void);
  97. extern void setup_local_APIC (void);
  98. extern void init_apic_mappings (void);
  99. extern void smp_local_timer_interrupt (struct pt_regs * regs);
  100. extern void setup_boot_APIC_clock (void);
  101. extern void setup_secondary_APIC_clock (void);
  102. extern void setup_apic_nmi_watchdog (void);
  103. extern int reserve_lapic_nmi(void);
  104. extern void release_lapic_nmi(void);
  105. extern void disable_timer_nmi_watchdog(void);
  106. extern void enable_timer_nmi_watchdog(void);
  107. extern void nmi_watchdog_tick (struct pt_regs * regs);
  108. extern int APIC_init_uniprocessor (void);
  109. extern void disable_APIC_timer(void);
  110. extern void enable_APIC_timer(void);
  111.  
  112. extern int check_nmi_watchdog (void);
  113. extern void enable_NMI_through_LVT0 (void * dummy);
  114.  
  115. extern unsigned int nmi_watchdog;
  116. #define NMI_NONE    0
  117. #define NMI_IO_APIC    1
  118. #define NMI_LOCAL_APIC    2
  119. #define NMI_INVALID    3
  120.  
  121. #else /* !CONFIG_X86_LOCAL_APIC */
  122. static inline void lapic_shutdown(void) { }
  123.  
  124. #endif /* !CONFIG_X86_LOCAL_APIC */
  125.  
  126. #endif /* __ASM_APIC_H */
  127.